\documentclass[12pt, a4paper]{article}
\usepackage{geometry}
\geometry{
	a4paper,
	left=12.7 mm,
	right=12.7 mm,
	top=12.7 mm,
	bottom=12.7 mm,
}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{physics}
\graphicspath{ {./} }
\usepackage{ctex}

\newcommand{\bvec}[1]{\ensuremath{\mathbf{#1}}}
\newcommand{\matrx}[1]
{
	\ensuremath
	{
		\left (
		\begin{matrix}
			#1
		\end{matrix}
		\right)
	}
}


\begin{document}
	\section{数值电磁场初步}
	\footnote{本笔记使用AI辅助。}
	本笔记简要介绍电磁场数值求解的基本思路。
	
	\subsection{Maxwell 方程}
	Maxwell 方程是描述电磁场的基本方程。
	数值电磁场主要使用电场$\bvec E$和磁感应强度场$\bvec B$的旋度方程：
	\begin{equation}
		\begin{cases}
			\curl \bvec{E} &= -\frac{\partial \bvec{B}}{\partial t} \\
			\curl \bvec{B} &= \mu_0 \bvec{J} + \mu_0 \epsilon_0 \frac{\partial \bvec{E}}{\partial t}
		\end{cases}
		~\Rightarrow~
		\begin{cases}
			\frac{\partial \bvec{B}}{\partial t} = -\curl \bvec{E} &= \\
			\frac{\partial \bvec{E}}{\partial t} = \frac{1}{\mu_0 \epsilon_0} \curl \bvec{B} - \frac{1}{\epsilon_0} \bvec{J} \\
		\end{cases}
	\end{equation}
	因此，问题的关键在于离散化空间$\curl$和时间$\pdv{}{t}$部分。
	
	\subsection{空间:Yee 网格}
		
	\begin{figure}[h]
		\centering
		\includegraphics[width=0.5\linewidth]{yee_grid}
		\caption{示意图。左：Yee网格；右：其中一个Yee微元}
		\label{fig:yee_grid}
	\end{figure}
	
	和其余有限差分方法类似，我们将空间离散为一个个微元体；但在数值电磁场中我们使用Yee网格。
	Yee 网格的特点是电场 $\mathbf{E}$ 和磁场 $\mathbf{B}$ 的各个分量交错分布在微元体的不同位置（而不是其他方法的同处于微元体顶点）。
	Yee 网格的巧妙设计在提升数值精度的同时，能使每一个电场分量都被$4$个相邻的磁感应场分量环绕，便于计算旋度（磁感应场同理）。
	例如，本笔记采用的Yee网格是：
	\begin{itemize}
		\item \textbf{$\mathbf{E}$ 的分量}：位于网格边的中心点。
		\begin{itemize}
			\item $E_x$ 位于 $(i+1/2, j, k)$
			\item $E_y$ 位于 $(i, j+1/2, k)$
			\item $E_z$ 位于 $(i, j, k+1/2)$
		\end{itemize}
		
		\item \textbf{$\mathbf{B}$ 的分量}：位于网格面的中心点。
		\begin{itemize}
			\item $B_x$ 位于 $(i, j+1/2, k+1/2)$
			\item $B_y$ 位于 $(i+1/2, j, k+1/2)$
			\item $B_z$ 位于 $(i+1/2, j+1/2, k)$
		\end{itemize}
	\end{itemize}
	其中$(i,j,k)$是微元体左下角顶点的计数（其$x$坐标为$x_i = i \Delta x$等）。
	总之，在一个Yee微元内有$6$个电磁场分量，分布在微元的不同位置。
	
	我们以$B_z$为例，
	由于$\pdv{\bvec B}{t} = -\curl \bvec E$，因此
	\begin{equation}
		\begin{aligned}
			\pdv{B_z (i+1/2,j+1/2,k)}{t} 
			&= - (\curl \bvec E)_z \\
			&= - \left( \pdv{E_y}{x} - \pdv{E_x}{y} \right) \\
			&= - \frac{1}{\Delta x} \left( (E_y(i+1,j+1/2,k) - E_y(i,j+1/2,k)) - (E_x(i+1/2,j+1,k) - E_x(i+1/2,j,k)) \right)
		\end{aligned}
	\end{equation}
	随后介绍时间离散方法。

	
	
	\subsection{时间：蛙跳法}
	\begin{figure}[h]
		\centering
		\includegraphics[width=0.5 \linewidth]{yee_frogleap}
		\caption{蛙跳法示意图，数字代表迭代顺序。}
		\label{fig:yeefrogleap}
	\end{figure}
	类似于牛顿第二定律的Verlet算法，蛙跳法被用于交替更新电场 $\mathbf{E}$ 和磁感应强度场 $\mathbf{B}$。
	在本笔记中，我们假定电场$\bvec E$被定义在$0,1,2,...$的整数时刻，而磁感应强度场 $\mathbf{B}$被定义在$0.5,1.5,2.5,...$的半整数时刻。
	在每次迭代中，我们先更新电场，随后（使用更新了的电场）更新磁感应强度场：
	\begin{equation}
		\begin{aligned}
			\bvec{E}^{(k+1)} &= \bvec{E}^{(k)} + \frac{\Delta t}{\mu_0 \epsilon_0} \curl \bvec{B}^{(k+1/2)} - \frac{\Delta t}{\epsilon_0} \bvec J\\
			\bvec{B}^{(k+1.5)} &= \bvec{B}^{(k+0.5)} - \Delta t \curl \bvec{E}^{(k+1)}
		\end{aligned}
		\qquad k = 0,1,2,...
	\end{equation}
	最初的电场与磁感应强度场由初始条件确定。
	
	\section{总结}
	
	数值电磁场计算中，Maxwell 方程是基础，Yee 网格提供了空间离散的框架，而蛙跳法则用于时间离散。通过合理选择离散方法和时间步进策略，可以有效地模拟电磁场的演化过程。
	
\end{document}
